Flask cookie和session
Flask session
Flask采用的是client side session
:将session数据加密,然后存储在cookie中。
使用Flask中的session需要先导入session
1 | from flask import session |
因为flask的session是通过加密之后放到了cookie中,有加密就有密钥用于解密,所以,只要用到了flask的session模块就一定要配置SECRET_KEY
这个全局配置
1 | import os |
之后就可以直接操作session了,读写session可以通过操作字典的方式。
设置session
1 | session["username"] = "admin" |
获取session
因为session相当于一个字典,所以可以通过session['key']
的方式获取,也可以通过get
方法获取
1 | user = session["username"] # 如果没有设置username,则会返回异常 |
删除session
可以使用pop
方法删除session
1 | session.pop("username") # 删除指定session内容 |
过期时间
如果没有设置session的有效期。那么默认就是浏览器关闭后过期。
如果设置session.permanent=True
,那么就会默认在31天后过期。
如果不想在31天后过期,那么可以设置app的配置:
1 | app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hour=2) # 在两个小时后过期。 |
Flask cookies
设置cookie
使用Response
对象设置返回对象,使用set_cookie
方法来设置cookie
1 | from flask import Response |
获取cookie
使用Request对象cookies字段的get方法来获取我们所需要的cookie
1 | name=request.cookies.get('username') |
删除cookie
使用Response
对象设置返回对象,使用del_cookie
方法来删除cookie
1 | from flask import Response |
设置cookie有效期
在设置cookie时,使用set_cookie
的参数max_age
来设置有有效期,单位为秒
1 | res.set_cookie("username", "password", max_age=60) |
还可以使用参数expires
来设置有效期,其值为datetime
类型
注意:expires
使用的是格林尼治时间,相对北京时间少8小时
1 | from datetime import datetime |
如果没有设置过期时间,则默认为浏览器关闭时过期
设置cookie的有效域名
cookie默认只能在主域名下使用,可以通过set_cookie
的domain
参数来设置有效域名:
1 | res.set_cookie("username", "password", domain=".baicu.com") |